/* Copyright 203-2115 AtomWare Technology Pty Limited
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 * The flowing information must be keep 
 * DownloadInterceptor.java
 * jackysoft-basic-core
 * 2012-12-17上午10:09:45
 * @author 屈甲康
 * QQ285799123
 * mailto:qujiakang@gmail.com
 */

package org.jackysoft.interceptor;

import java.io.ByteArrayInputStream;
import java.lang.reflect.Method;

import org.jackysoft.entity.AbstractEntity;
import org.jackysoft.util.FileInfo;
import org.jackysoft.util.HttpUtil;

import com.opensymphony.xwork2.ActionInvocation;

public class DownloadInterceptor extends AbstractInterceptor{

	/**
	 * 
	 */
	private static final long serialVersionUID = 489985990241422304L;
	@Override
	public String intercept(ActionInvocation ai) throws Exception {
		super.intercept(ai);
		Object action = ai.getAction();
		AbstractEntity bean =  (AbstractEntity) parseBean(action, "bean");
		
		Method service_m_gets = service.getClass().getMethod("download", String.class);
	
		FileInfo fileInfo = (FileInfo) service_m_gets.invoke(service, bean.getId());
        
		setProperty(action, "inputStream", new ByteArrayInputStream(fileInfo.getData()));
		setProperty(action, "contentType", HttpUtil.extToMimeType(fileInfo.getFileType()));
		setProperty(action, "contentLength", fileInfo.getDataLength());
		setProperty(action, "upLoadFileName", fileInfo.getTitle()+"."+fileInfo.getFileType());
			
		return ai.invoke();
	}
}
